package com.link.base.base.accntconsumer.dao.mybatis.mapper;

import com.link.base.base.accnt.model.AccountPerson;
import com.link.base.base.accnt.model.TagGroup;
import com.link.base.base.accnt.model.TagItem;
import com.link.base.base.accntconsumer.model.AccountConsumer;
import com.link.core.basic.dao.mapper.BasicMapper;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 消费者
 *
 * @author 曲元涛
 * @date 2020-07-01 18:12:52
 */
@Repository
public interface AccountConsumerMapper extends BasicMapper<AccountConsumer> {

    /**
     * 根据条件查询消费者
     *
     * @author 顾桂山
     * @date 2020-02-17 17:59:34
     */
    AccountConsumer queryUniqueByExample(AccountConsumer record) throws Exception;

    /**
     * 查询导购姓名列表
     * @author : LiQun
     * @param account 消费者
     * @return 导购姓名list
     * @date : 下午3:06 2018/7/27
     */
    List<String> queryGuideList(AccountConsumer account) throws Exception;

    /**
     *  新建客户-标签关系 CRM
     * @param tagItem 企点标签
     */
    void accntTagInsert(TagItem tagItem) throws Exception;

    /**
     *  查询客户标签
     * @param record 企点标签
     */
    List<TagItem> queryAccountTags(TagItem record) throws Exception;

    /**
     * 更新客户-标签关系 CRM
     * @param tagItem 企点标签
     */
    void accntTagUpdate(TagItem tagItem) throws Exception;

    /**
     *  删除客户标签关系 根据rowid(中间表的rowid) 企点
     * @param tiDb 企点标签
     */
    void deleteAccnt8TagById(TagItem tiDb) throws Exception;

    /**
     *  查询企点客户的状态数据
     * @author lizt
     * @param entity 企点标签
     * @date 2017年5月18日
     */
    List<TagItem> queryQdAccntTags(TagItem entity) throws Exception;

    /**
     * 查询企点客户的状态数据
     * @param entity 企点标签
     */
    List<TagItem> queryQdAccntTagGroups(TagGroup entity) throws Exception;

    /**
     * 根据客户id及person查询客户是否存在
     * @author : LiQun
     * @param entity 客户-识别到Person中间表对象
     * @date : 下午5:44 2018/5/11
     */
    int queryAccountPersonById(AccountPerson entity) throws Exception;

    /**
     * 插入中间表
     *
     * @author : LiQun
     * @param entity 客户-识别顾客中间表对象
     * @throws Exception 异常信息
     * @date : 下午3:57 2018/5/7
     */
    void accountPersonInsert(AccountPerson entity) throws Exception;

    /**
     * 根据personLinkId查询客户列表
     * @author LiQun
     * @date 2018/12/6
     * @param list 客户-人物中间表对象 personId 人的linkId
     * @return 客户列表
     * @throws Exception 异常信息
     */
    List<AccountConsumer> queryAccountByPersonIdList(List<AccountPerson> list) throws Exception;

    /**
     *  查询客户简单信息 根据wxopenid
     * @param entity 消费者
     */
    AccountConsumer querySimpleAccntByWxOpenId(AccountConsumer entity) throws Exception;

    /**
     * 查询客户头像url
     * @param record 消费者
     */
    AccountConsumer queryHeadIconUrl(AccountConsumer record) throws Exception;

    /**
     * 根据openId查询消费者信息
     * @author Lizt
     * @param account 消费者
     * @date 2018/7/26
     */
    AccountConsumer queryConsumerByOpenId(AccountConsumer account) throws  Exception;

    /**
     * 插入消费者信息
     * @param account 消费者
     */
    void addConsumer(AccountConsumer account) throws  Exception;

    /**
     * 更新消费者信息
     * @author Lizt
     * @param account 消费者
     * @date 2018/7/31
     */
    void modifyConsumer(AccountConsumer account) throws  Exception;

    /**
     * 小程序获取到手机号码后更新消费者手机号码信息
     *
     * @author KuangRuifeng
     * @date 2018/12/18
     * @param account 要更新的数据
     * @throws Exception 异常信息
     */
    void updMobilePhoneInfo(AccountConsumer account) throws Exception;

    /**
     * 查询访客信息
     * @author 路江
     * @param entity 消费者
     */
    AccountConsumer queryAcctAndMember(AccountConsumer entity) throws Exception;

    /**
     * 修改消費者信息
     *
     * @author zengchi
     * @date 2019-09-26
     * @param entity 消费者对象
     */
    void updateConsumer(AccountConsumer entity) throws Exception;

    /**
     * 查询消费者
     *
     * @author zengchi
     * @date 2019-09-30
     * @param id 消费者id
     */
    AccountConsumer queryConsumerById(Long id) throws Exception;

    /**
     * 微信更新消费者
     *
     * @author huanglongjian
     * @date 2019-10-22 14:19
     */
    void wxUpdateAccount(AccountConsumer account) throws Exception;

    /**
     * 根据一些条件查询消费者
     *
     * @author 李杨
     * @date 2020-03-05
     * @param accountConsumer 消费者
     */
    List<AccountConsumer> queryConsumerByCondition(AccountConsumer accountConsumer) throws Exception;

    /**
     * 更新消费者的若干字段（非全量更新）
     *
     * @author 李杨
     * @date 2020-03-05
     * @param accountConsumer 消费者
     */
    void updateExistsConsumer(AccountConsumer accountConsumer) throws Exception;

    /**
     * 按手机号查询消费者
     * @author 杨锐
     * @date 2020-03-05 14:37:18
     * @param entity 消费者
     */
    AccountConsumer queryUniqueByPhone(AccountConsumer entity) throws Exception;

    /**
     * 更新渠道消费者mobilePhone or openId
     * @author 李杰
     * @param entity 消费者
     */
    void consumerUpdate(AccountConsumer entity) throws Exception;

    /**
     * 清空客户微信seq
     *
     * @param record 消费者
     */
    void emptyAccntSeqUpdate(AccountConsumer record) throws Exception;
}